/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.una.pol.ejb.compraventa.backingbean;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
import py.una.pol.pweb.compraventa.modelos.Pago;

/**
 *
 * @author claudia
 */
@ManagedBean
@SessionScoped
public class FileUploadController implements Serializable{

    private static final long serialVersionUID = 5088570493869770149L;
    
    @EJB
    PagoMasivo pagoMasivo;

    public void handleFileUpload(FileUploadEvent event) {
        UploadedFile file = event.getFile();
        String linea;
        InputStreamReader isr;
        BufferedReader buffer;
        List<Pago> pagos=new ArrayList<Pago>();
        
        try {
            isr = new InputStreamReader(file.getInputstream());
            buffer = new BufferedReader(isr);
            //Leer el la informacion del archivo linea por linea
           while ((linea = buffer.readLine()) != null) {
                System.out.println(linea);
                pagos.add(convertirAPago(linea));
                
            }
            //
           
            //PagoMasivo pagoMasivo= new PagoMasivo();
            pagoMasivo.guardarPagos(pagos);
            mensaje("El archivo "+ event.getFile().getFileName() + " fue cargado de manera exitosa!!",0);
            
            

        } catch (IOException e) {
            
            mensaje("Ocurrió un error al cargar el archivo " + event.getFile().getFileName(),1);
        }

    }
    
    
    public Pago convertirAPago (String linea){
    
        Pago pago= new Pago();
        String[] token;
        Integer idCliente = null;
        Double monto = null;
        Date fecha = null;
        token = linea.split("\\ ");
        try {
            idCliente = Integer.parseInt(token[0]);
            monto = Double.parseDouble(token[1]);
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            fecha = sdf.parse(token[2]);
        } catch (ParseException pe) {
            pe.printStackTrace();
        }
        
        pago.setIdcliente(idCliente);
        pago.setMonto(monto);
        pago.setFecha(fecha);
        pago.setTipo("EXTERNO");
        return pago;
    }
    
    public void mensaje(String mensaje, int i){
    
        String [] tipoMsg={"Exito!","Error!"};
        FacesMessage msg = new FacesMessage(tipoMsg[i], mensaje);
        FacesContext.getCurrentInstance().addMessage(null, msg);
   
    }
    
}
